--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
admin/create_admin_account.py main (dac94b89) Text, 3.33 KB
T8b949e#!/usr/bin/env python3
T8b949e# nomadForum - a forum on the NomadNetwork
T8b949e# Copyright (C) 2023-2026 AutumnSpark1226
T8b949e#
T8b949e# This program is free software: you can redistribute it and/or modify
T8b949e# it under the terms of the GNU General Public License as published by
T8b949e# the Free Software Foundation, either version 3 of the License, or
T8b949e# (at your option) any later version.
T8b949e#
T8b949e# This program is distributed in the hope that it will be useful,
T8b949e# but WITHOUT ANY WARRANTY; without even the implied warranty of
T8b949e# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
T8b949e# GNU General Public License for more details.
T8b949e#
T8b949e# You should have received a copy of the GNU General Public License
T8b949e# along with this program. If not, see <https://www.gnu.org/licenses/>.
Tff7b72import T7ee787os
Tff7b72import T7ee787sys
Tff7b72from T7ee787getpass Tff7b72import Te6edf3getpass
Tff7b72from T7ee787argon2 Tff7b72import Te6edf3PasswordHasher
Tff7b72from T7ee787argon2T7ee787.T7ee787exceptions Tff7b72import Te6edf3VerificationError
Tff7b72if Tff7b72__name__ Tff7b72== Ta5d6ff"Ta5d6ff__main__Ta5d6ff"Tb4b4b4:
Tff7b72tryTb4b4b4:
Te6edf3sysTff7b72.Td2a8ffpathTff7b72.Td2a8ffextendTb4b4b4(
Tb4b4b4[Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffabspathTb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffdirnameTb4b4b4(Tff7b72__file__Tb4b4b4)Tb4b4b4, Te6edf3osTff7b72.Td2a8ffpardirTb4b4b4)Tb4b4b4)Tb4b4b4]
Tb4b4b4)
Tff7b72import T7ee787main
Te6edf3mainTff7b72.Td2a8ffsetup_dbTb4b4b4(Tb4b4b4)
Te6edf3username Tff7b72= Tffa657inputTb4b4b4(Ta5d6ff"Ta5d6ffEnter a username: Ta5d6ff"Tb4b4b4)
Tff7b72if Tff7b72not Te6edf3mainTff7b72.Td2a8ffcheck_usernameTb4b4b4(Te6edf3usernameTb4b4b4, Te6edf3allow_adminTff7b72=Tff7b72TrueTb4b4b4)Tb4b4b4:
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffThis username is not allowedTa5d6ff"Tb4b4b4)
Te6edf3mainTff7b72.Td2a8ffclose_databaseTb4b4b4(Te6edf3write_changesTff7b72=Tff7b72FalseTb4b4b4)
Te6edf3exitTb4b4b4(T79c0ff1Tb4b4b4)
Tff7b72if Tb4b4b4(
Tffa657lenTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffquery_databaseTb4b4b4(
Ta5d6fffTa5d6ff"Ta5d6ffSELECT user_id FROM users WHERE username = Ta5d6ff'Tffd700{Te6edf3usernameTffd700}Ta5d6ff'Ta5d6ff"
Tb4b4b4)
Tb4b4b4)
Tff7b72!= T79c0ff0
Tb4b4b4)Tb4b4b4:
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffThis account already exists. It will be added as an admin account.Ta5d6ff"Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3password Tff7b72= Te6edf3getpassTb4b4b4(Ta5d6ff"Ta5d6ffPlease enter a password: Ta5d6ff"Tb4b4b4)
Tff7b72if Tffa657lenTb4b4b4(Te6edf3passwordTb4b4b4) Tff7b72< T79c0ff8Tb4b4b4:
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffYour password must be at least 8 characters long.Tffea00\nTa5d6ff"Tb4b4b4)
Te6edf3mainTff7b72.Td2a8ffclose_databaseTb4b4b4(Te6edf3write_changesTff7b72=Tff7b72FalseTb4b4b4)
Te6edf3exitTb4b4b4(T79c0ff1Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3hasher Tff7b72= Te6edf3PasswordHasherTb4b4b4(Tb4b4b4)
Te6edf3hashed_password Tff7b72= Te6edf3hasherTff7b72.Td2a8ffhashTb4b4b4(Te6edf3passwordTb4b4b4)
Te6edf3password Tff7b72= Te6edf3getpassTb4b4b4(Ta5d6ff"Ta5d6ffPlease confirm your password: Ta5d6ff"Tb4b4b4)
Tff7b72tryTb4b4b4:
Te6edf3hasherTff7b72.Td2a8ffverifyTb4b4b4(Te6edf3hashed_passwordTb4b4b4, Te6edf3passwordTb4b4b4)
Tff7b72except Te6edf3VerificationErrorTb4b4b4:
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffThe entered passwords do not match.Ta5d6ff"Tb4b4b4)
Te6edf3mainTff7b72.Td2a8ffclose_databaseTb4b4b4(Te6edf3write_changesTff7b72=Tff7b72FalseTb4b4b4)
Te6edf3exitTb4b4b4(T79c0ff1Tb4b4b4)
Te6edf3prepared_password Tff7b72= Te6edf3mainTff7b72.Td2a8ffencryptTb4b4b4(Te6edf3hashed_passwordTb4b4b4)
Te6edf3mainTff7b72.Td2a8ffexecute_sqlTb4b4b4(
Ta5d6fffTa5d6ff"Ta5d6ffINSERT INTO users (username, password, display_name, about, default_styling) VALUES (Ta5d6ff'Tffd700{Te6edf3usernameTffd700}Ta5d6ff'Ta5d6ff, Ta5d6ff'Tffd700{Te6edf3prepared_passwordTffd700}Ta5d6ff'Ta5d6ff, Ta5d6ff'Tffd700{Te6edf3usernameTffd700}Ta5d6ff'Ta5d6ff, Ta5d6ff'Ta5d6ffNoneTa5d6ff'Ta5d6ff, Ta5d6ff'Ta5d6ffNoneTa5d6ff'Ta5d6ff)Ta5d6ff"
Tb4b4b4)
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffRegistration successful!Ta5d6ff"Tb4b4b4)
Tffa657printTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ffThe account Ta5d6ff'Tffd700{Te6edf3usernameTffd700}Ta5d6ff'Ta5d6ff has been created.Ta5d6ff"Tb4b4b4)
Tff7b72if Tb4b4b4(
Tffa657lenTb4b4b4(
Te6edf3mainTff7b72.Td2a8ffquery_databaseTb4b4b4(
Ta5d6fffTa5d6ff"Ta5d6ffSELECT value FROM settings WHERE key = Ta5d6ff'Ta5d6ffadmin_usernameTa5d6ff'Ta5d6ff AND value = Ta5d6ff'Tffd700{Te6edf3usernameTffd700}Ta5d6ff'Ta5d6ff"
Tb4b4b4)
Tb4b4b4)
Tff7b72== T79c0ff0
Tb4b4b4)Tb4b4b4:
Te6edf3mainTff7b72.Td2a8ffexecute_sqlTb4b4b4(
Ta5d6fffTa5d6ff"Ta5d6ffINSERT INTO settings (key, value) VALUES (Ta5d6ff'Ta5d6ffadmin_usernameTa5d6ff'Ta5d6ff, Ta5d6ff'Tffd700{Te6edf3usernameTffd700}Ta5d6ff'Ta5d6ff)Ta5d6ff"
Tb4b4b4)
Tffa657printTb4b4b4(Ta5d6fffTa5d6ff"Ta5d6ff'Tffd700{Te6edf3usernameTffd700}Ta5d6ff'Ta5d6ff has been added as an admin.Ta5d6ff"Tb4b4b4)
Tff7b72elseTb4b4b4:
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffThis user is already an admin.Ta5d6ff"Tb4b4b4)
Te6edf3mainTff7b72.Td2a8ffclose_databaseTb4b4b4(Tb4b4b4)
Tff7b72exceptTb4b4b4:
Tffa657printTb4b4b4(Ta5d6ff"Ta5d6ffAn error occuredTa5d6ff"Tb4b4b4)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────